#include "stm32f10x.h"     
#include "delay.h"

uint8_t Key_GetKeyCode()
{
	uint8_t keyCode=0;
	//判断
	if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)==0)
	{
		Delay_ms(20);
		while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)==0);//按键按下
		Delay_ms(20);
		keyCode=1;
		
	}
	return keyCode;
}

int main()
{
//使能 初始化
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//GPIOA初始化 输出
GPIO_InitTypeDef GPIO_InitStruct;//结构体变量
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出模式
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;//LED
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_SetBits(GPIOA,GPIO_Pin_1);
	
//GPIOB初始化 输入
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;//上拉输入
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_7;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);

uint8_t num=0;//计数，记录按下次数。
uint8_t keyCode;
while(1)
{
	keyCode=Key_GetKeyCode();
	if(keyCode==1&&(num%2==0))//相当于第一次按下时
	{
		GPIO_ResetBits(GPIOA,GPIO_Pin_1);//亮
		num++;
	}//再次按下熄灭
	else if(keyCode==1&&(num%2==1))
	{
		GPIO_SetBits(GPIOA,GPIO_Pin_1);
		num++;
	}
}
}
















